home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
ada
/
gnat1792.zip
/
gnat179b
/
t-adainc
/
i-c.ads
< prev
next >
Wrap
Text File
|
1994-05-19
|
15KB
|
298 lines
------------------------------------------------------------------------------
-- --
-- GNAT COMPILER COMPONENTS --
-- --
-- I N T E R F A C E S . C --
-- --
-- S p e c --
-- --
-- $Revision: 1.3 $ --
-- --
-- Copyright (c) 1992,1993,1994 NYU, All Rights Reserved --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- ware Foundation; either version 2, or (at your option) any later ver- --
-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
-- for more details. You should have received a copy of the GNU General --
-- Public License distributed with GNAT; see file COPYING. If not, write --
-- to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. --
-- --
------------------------------------------------------------------------------
package Interfaces.C is
pragma Pure;
-- Declaration's based on C's <limits.h>
CHAR_BIT : constant := 8;
SCHAR_MIN : constant := -128;
SCHAR_MAX : constant := 127;
UCHAR_MAX : constant := 255;
-- Signed and Unsigned Integers. Note that in GNAT, we have ensured that
-- the standard predefined Ada types correspond to the standard C types
type Int is new Integer;
type Short is new Short_Integer;
type Long is new Long_Integer;
type Signed_Char is range SCHAR_MIN .. SCHAR_MAX;
for Signed_Char'Size use CHAR_BIT;
type Unsigned is mod 2 ** Integer'Size;
type Unsigned_Short is mod 2 ** Short_Integer'Size;
type Unsigned_Long is mod 2 ** Long_Integer'Size;
type Unsigned_Char is mod (UCHAR_MAX + 1);
for Unsigned_Char'Size use CHAR_BIT;
subtype Plain_Char is Unsigned_Char; -- ??? should be parametrized
type Ptrdiff_T is new Integer; -- ??? should be parametrized
type Size_T is mod 2 ** 32; -- ??? should be parametrized
-- Floating-Point
type Float is new Standard.Float;
subtype C_Float is Float;
type Double is new Standard.Long_Float;
type Long_Double is new Standard.Long_Long_Float;
-- Characters and Strings
-- type Char is new Character;
subtype Char is Character;
-- We don't yet allow derivation from type Character ???
Nul : constant Char := Char'First;
Ada_To_C : constant array (Character) of Char := (
Char'Val (000), Char'Val (001), Char'Val (002), Char'Val (003),
Char'Val (004), Char'Val (005), Char'Val (006), Char'Val (007),
Char'Val (008), Char'Val (009), Char'Val (010), Char'Val (011),
Char'Val (012), Char'Val (013), Char'Val (014), Char'Val (015),
Char'Val (016), Char'Val (017), Char'Val (018), Char'Val (019),
Char'Val (020), Char'Val (021), Char'Val (022), Char'Val (023),
Char'Val (024), Char'Val (025), Char'Val (026), Char'Val (027),
Char'Val (028), Char'Val (029), Char'Val (030), Char'Val (031),
Char'Val (032), Char'Val (033), Char'Val (034), Char'Val (035),
Char'Val (036), Char'Val (037), Char'Val (038), Char'Val (039),
Char'Val (040), Char'Val (041), Char'Val (042), Char'Val (043),
Char'Val (044), Char'Val (045), Char'Val (046), Char'Val (047),
Char'Val (048), Char'Val (049), Char'Val (050), Char'Val (051),
Char'Val (052), Char'Val (053), Char'Val (054), Char'Val (055),
Char'Val (056), Char'Val (057), Char'Val (058), Char'Val (059),
Char'Val (060), Char'Val (061), Char'Val (062), Char'Val (063),
Char'Val (064), Char'Val (065), Char'Val (066), Char'Val (067),
Char'Val (068), Char'Val (069), Char'Val (070), Char'Val (071),
Char'Val (072), Char'Val (073), Char'Val (074), Char'Val (075),
Char'Val (076), Char'Val (077), Char'Val (078), Char'Val (079),
Char'Val (080), Char'Val (081), Char'Val (082), Char'Val (083),
Char'Val (084), Char'Val (085), Char'Val (086), Char'Val (087),
Char'Val (088), Char'Val (089), Char'Val (090), Char'Val (091),
Char'Val (092), Char'Val (093), Char'Val (094), Char'Val (095),
Char'Val (096), Char'Val (097), Char'Val (098), Char'Val (099),
Char'Val (100), Char'Val (101), Char'Val (102), Char'Val (103),
Char'Val (104), Char'Val (105), Char'Val (106), Char'Val (107),
Char'Val (108), Char'Val (109), Char'Val (110), Char'Val (111),
Char'Val (112), Char'Val (113), Char'Val (114), Char'Val (115),
Char'Val (116), Char'Val (117), Char'Val (118), Char'Val (119),
Char'Val (120), Char'Val (121), Char'Val (122), Char'Val (123),
Char'Val (124), Char'Val (125), Char'Val (126), Char'Val (127),
Char'Val (128), Char'Val (129), Char'Val (130), Char'Val (131),
Char'Val (132), Char'Val (133), Char'Val (134), Char'Val (135),
Char'Val (136), Char'Val (137), Char'Val (138), Char'Val (139),
Char'Val (140), Char'Val (141), Char'Val (142), Char'Val (143),
Char'Val (144), Char'Val (145), Char'Val (146), Char'Val (147),
Char'Val (148), Char'Val (149), Char'Val (150), Char'Val (151),
Char'Val (152), Char'Val (153), Char'Val (154), Char'Val (155),
Char'Val (156), Char'Val (157), Char'Val (158), Char'Val (159),
Char'Val (160), Char'Val (161), Char'Val (162), Char'Val (163),
Char'Val (164), Char'Val (165), Char'Val (166), Char'Val (167),
Char'Val (168), Char'Val (169), Char'Val (170), Char'Val (171),
Char'Val (172), Char'Val (173), Char'Val (174), Char'Val (175),
Char'Val (176), Char'Val (177), Char'Val (178), Char'Val (179),
Char'Val (180), Char'Val (181), Char'Val (182), Char'Val (183),
Char'Val (184), Char'Val (185), Char'Val (186), Char'Val (187),
Char'Val (188), Char'Val (189), Char'Val (190), Char'Val (191),
Char'Val (192), Char'Val (193), Char'Val (194), Char'Val (195),
Char'Val (196), Char'Val (197), Char'Val (198), Char'Val (199),
Char'Val (200), Char'Val (201), Char'Val (202), Char'Val (203),
Char'Val (204), Char'Val (205), Char'Val (206), Char'Val (207),
Char'Val (208), Char'Val (209), Char'Val (210), Char'Val (211),
Char'Val (212), Char'Val (213), Char'Val (214), Char'Val (215),
Char'Val (216), Char'Val (217), Char'Val (218), Char'Val (219),
Char'Val (220), Char'Val (221), Char'Val (222), Char'Val (223),
Char'Val (224), Char'Val (225), Char'Val (226), Char'Val (227),
Char'Val (228), Char'Val (229), Char'Val (230), Char'Val (231),
Char'Val (232), Char'Val (233), Char'Val (234), Char'Val (235),
Char'Val (236), Char'Val (237), Char'Val (238), Char'Val (239),
Char'Val (240), Char'Val (241), Char'Val (242), Char'Val (243),
Char'Val (244), Char'Val (245), Char'Val (246), Char'Val (247),
Char'Val (248), Char'Val (249), Char'Val (250), Char'Val (251),
Char'Val (252), Char'Val (253), Char'Val (254), Char'Val (255));
C_To_Ada : array (Char) of Character := (
Character'Val (000), Character'Val (001), Character'Val (002),
Character'Val (003), Character'Val (004), Character'Val (005),
Character'Val (006), Character'Val (007), Character'Val (008),
Character'Val (009), Character'Val (010), Character'Val (011),
Character'Val (012), Character'Val (013), Character'Val (014),
Character'Val (015), Character'Val (016), Character'Val (017),
Character'Val (018), Cha